# 创建一个浏览器对象
import datetime
import os
import sys
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.edge.service import Service


#创建一个浏览器对象
class Driver:
    driver=""
    #构造函数
    def __init__(self):
        #手动选择驱动方式
        edge_driver_path = "D:\edgedriver_win64\msedgedriver.exe"  # 替换为你的 EdgeDriver 路径
        options=webdriver.EdgeOptions()
        options.add_argument("--start-maximized")  # 启动时最大化窗口
        self.driver = webdriver.Edge(service=Service(edge_driver_path),options=options)
        #设置隐式等待
        self.driver.implicitly_wait(2)
        # #自动选择驱动方式
        # options=webdriver.EdgeOptions()
        # self.driver=webdriver.Edge(service=Service(EdgeChromiumDriverManager().install()),options=options)
    def getScreenshot(self):
        #创建屏幕截图
        #图片文件名称：2025-08-26-123456.png
        #图片路径：../images/调用方法-2025-08-26/2025-08-26-123456.png
        #图片路径：../images/LoginSucTest-2025-08-26/2025-08-26-123456.png

        #目录文件名称
        dirname=datetime.datetime.now().strftime("%Y-%m-%d")
        #判断dirname文件夹是否存在，若不存在则创建文件夹 
        dir_path = f"../images/{dirname}"
        os.makedirs(dir_path, exist_ok=True)
        #图片名称
        #获取调用的方法名
        mathodname=sys._getframe().f_back.f_code.co_name
        filename=mathodname+"-"+datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"
        #屏幕截图
        self.driver.save_screenshot("../images/"+dirname+"/"+filename)
    # 由于项目外层不是一个单纯的input标签，而是组件封装之后的，所以不能使用selenium中的clear()
    # 清空指定输入框的内容
    def clear(self, element):
        actions = ActionChains(self.driver)
        actions.click(element)  # 点击元素
        actions.key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL)  # Ctrl+A
        actions.send_keys(Keys.DELETE)  # 删除
        actions.perform()  # 执行所有动作


QE_Driver = Driver()